package org.stars.dao.sqlmapper.macro;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface MacroDefinition {
	String id() default "";
	MacroEvaluation evaluation() default MacroEvaluation.RUNTIME;
	MacroParam arguments() default MacroParam.OPTIONAL;
	MacroParam body() default MacroParam.OPTIONAL;
	/**
	 * Macro type can be parent of this macro. If <code>null</code> the macro
	 * can be executed everywhere.
	 * 
	 * @return
	 * 		list of admitted parents macro
	 */
	String[] admittedParents() default {}; 	
} 
